/*
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package eu.fastl.dragster.loadgen.impl;

import eu.fastl.dragster.loadgen.UrlProvider;
import eu.fastl.dragster.util.UrlUtils;

/**
 * {@link UrlProvider} which has exactly one url to provide
 *
 * @author Ernst Fastl
 */
public class FixedUrlProvider implements UrlProvider {

    private final String url;

    private final long runs;

    private long count = 0l;

    public FixedUrlProvider(String url, long runs) {
        this.runs = runs;
        if (UrlUtils.isValidUrl(url)) {
            this.url = url;
        } else {
            String encodedUrl = UrlUtils.encodeParameters(url);
            if (UrlUtils.isValidUrl(encodedUrl)) {
                this.url = encodedUrl;
            } else {
                throw new IllegalArgumentException("Invalid URL: " + url);
            }
        }
    }

    public String getNextUrl() {
        if (this.runs == 0) {
            return this.url;
        } else {
            if (this.runs > this.count) {
                this.count++;
                return this.url;
            }
            return null;
        }
    }

}
